Упорядочивание.отд
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы
 
 glagol.png Программируем по-русски
 

Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку.

Издатель Глагола
 

 

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
                          ОТДЕЛ Упорядочивание+; 
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(* НАЗНАЧЕНИЕ: проверка упорядочивания рядов                                  *)
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ИСПОЛЬЗУЕТ 
  Вставкой,
  Вставкой2,
  Выбором,
  Обменом,
  ОбменомБ,
  Матем ИЗ "...\Отделы\Числа\",
  ОС    ИЗ "...\Отделы\Обмен\",
  Вывод ИЗ "...\Отделы\Обмен\"; 

ПОСТ
                (* алгоритмы упорядочивания *)
  упВставкой = 0; 
  упВставкой2= 1; 
  упВыбором  = 2; 
  упОбменом  = 3; 
  упОбменомБ = 4; 
                (* число повторов упорядочивания короткого ряда *)
  Повторов = 10000; 

ПЕР
  короткийРяд:РЯД 30    ИЗ ЦЕЛ; 
  длинныйРяд :РЯД 30000 ИЗ ЦЕЛ; 

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Вывести(ряд+:РЯД ИЗ ЦЕЛ); 
(* вывод на экран всех слагаемых ряда *)
ПЕР
  поз:ЦЕЛ; 
УКАЗ
  ОТ поз:=0 ДО РАЗМЕР(ряд)-1 ВЫП
    Вывод.ЧЦел("%d ",ряд[поз],0,0,0)
  КОН; 
  Вывод.Цепь("^")
КОН Вывести; 

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Заполнить(ряд+:РЯД ИЗ ЦЕЛ); 
(* заполнение ряда случайными числами *)
ПЕР
  поз:ЦЕЛ; 
УКАЗ
  ОТ поз:=0 ДО РАЗМЕР(ряд)-1 ВЫП
    ряд[поз]:=УЗК(ВШИРЦЕЛ(Матем.случ()*РАЗМЕР(ряд)))
  КОН
КОН Заполнить; 

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Испытание(Алгоритм:ЗАДАЧА(ряд+:РЯД ИЗ ЦЕЛ)); 
(* испытание заданного алгоритма упорядочивания *)
ПЕР
  повтор:ЦЕЛ; 
  начВремя,время:ЦЕЛ; 
УКАЗ
  (* одинаковая последовательность случайных чисел *)
  Матем.случ0(0);  
  (* повторяем упорядочивание малого ряда *)
  время:=0; 
  ОТ повтор:=1 ДО Повторов ВЫП
    Заполнить(короткийРяд); 
    начВремя:=ОС.Время(); 
    Алгоритм(короткийРяд); 
    УВЕЛИЧИТЬ(время,ОС.Время()-начВремя)
  КОН; 
  Вывод.ЧЦел("%d рядов из %d целых чисел за %dмс^",Повторов,РАЗМЕР(короткийРяд),время,0); 
  Вывести(короткийРяд); 
  (* упорядочиваем большой ряд *)
  Заполнить(длинныйРяд); 
  начВремя:=ОС.Время(); 
  Алгоритм(длинныйРяд); 
  время:=ОС.Время() - начВремя; 
  Вывод.ЧЦел("ряд из %d целых чисел за %dмс^",РАЗМЕР(длинныйРяд),время,0,0)
КОН Испытание; 

(*────────────────────────────────────────────────────────────────────────────*)
ЗАДАЧА Испытания; 
(* испытание всех алгоритмов упорядочивания *)
ПЕР
  алгоритм:ЦЕЛ; 
УКАЗ
  ОТ алгоритм:=упВставкой ДО упОбменомБ ВЫП
    ВЫБРАТЬ алгоритм ИЗ
    | упВставкой:  
        Вывод.Цепь("^Упорядочивание простой вставкой^");  
        Испытание(Вставкой.Упорядочить)
    | упВставкой2: 
        Вывод.Цепь("^Упорядочивание двоичной вставкой^");  
        Испытание(Вставкой2.Упорядочить)
    | упВыбором: 
        Вывод.Цепь("^Упорядочивание простым выбором^");  
        Испытание(Выбором.Упорядочить)
    | упОбменом: 
        Вывод.Цепь("^Упорядочивание простым обменом^");  
        Испытание(Обменом.Упорядочить)
    | упОбменомБ: 
        Вывод.Цепь("^Упорядочивание быстрым обменом^");  
        Испытание(ОбменомБ.Упорядочить)
    ИНАЧЕ
    КОН
  КОН
КОН Испытания; 

(*────────────────────────────────────────────────────────────────────────────*)
УКАЗ
  Испытания
КОН Упорядочивание.




Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com или Издателю Глагола:
 email
 
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы